#include "keyboard.h"
#include "ui_keyboard.h"

Keyboard::Keyboard(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Keyboard)
{
    ui->setupUi(this);
    setWindowFlags(Qt::FramelessWindowHint);
    hide();
}

Keyboard::~Keyboard()
{
    delete ui;
}

void Keyboard::on_btnKey_Back_clicked()
{
    key_p=txtdata.endsWith(tr("."));
    if(txtdata.size()==2 && txtdata.startsWith(tr("0.")))
        txtdata.clear();
    else
        txtdata.remove(txtdata.size()-1,1);
    if(key_p==true)
        ui->btnKey_p->setEnabled(true);
    ui->txtValue->setText(txtdata);
}

void Keyboard::add_text(unsigned char i)
{
    txtdata+=i;
    ui->txtValue->setText(txtdata);
}

void Keyboard::on_btnKey_C_clicked()
{
    txtdata.clear();
    ui->txtValue->setText(txtdata);
    ui->btnKey_p->setEnabled(true);
}

void Keyboard::on_btnKey_p_clicked()
{
    if(txtdata.size()==0)
        add_text('0');
    add_text('.');
    ui->btnKey_p->setEnabled(false);
}

void Keyboard::on_btnKey_1_clicked()
{
    add_text('1');
}

void Keyboard::on_btnKey_2_clicked()
{
    add_text('2');
}

void Keyboard::on_btnKey_3_clicked()
{
    add_text('3');
}

void Keyboard::on_btnKey_4_clicked()
{
    add_text('4');
}

void Keyboard::on_btnKey_5_clicked()
{
    add_text('5');
}

void Keyboard::on_btnKey_6_clicked()
{
     add_text('6');
}

void Keyboard::on_btnKey_7_clicked()
{
    add_text('7');
}

void Keyboard::on_btnKey_8_clicked()
{
    add_text('8');
}

void Keyboard::on_btnKey_9_clicked()
{
    add_text('9');
}

void Keyboard::on_btnKey_0_clicked()
{
    if(txtdata.size()!=0)
            add_text('0');
    else{
            add_text('0');
            add_text('.');
            ui->btnKey_p->setEnabled(false);
    }
}

void Keyboard::on_btnKey_OK_clicked()
{
    if(dt==DATA_TH)
        emit btnKey_OK_clicked(txtdata.toFloat());
    else
        emit btnKey_OK_clicked(txtdata.toULongLong());
    key_p=false;
    ui->btnKey_p->setEnabled(true);
    txtdata.clear();
    ui->txtValue->setText(txtdata);
    hide();
}

void Keyboard::RunKeyboard(DATA_TYPE d)
{
    dt=d;
    show();
}
